// miniprogram/pages/person/person.js
const app = getApp()
const publishRouter = app.publishRouter

Page({

  /**
   * 页面的初始数据
   */
  data: {
    showAuthDialog: false, // 显示用户授权组件
    userInfo: null, // 用户信息
    tabs: [
      { value: 0, label: '我的公告' },
      { value: 1, label: '我的申请' },
      { value: 2, label: '我的线索' }
    ],
    curTab: 0,
    items: null
  },

  /**
   * 授权查看用户信息
   * @param {Event} event 
   */
  bindGetUserInfo (event) {
    const userInfo = event.detail.userInfo;
    if (userInfo) {
      app.global.auth['scope.userInfo'] = true
      app.global.userInfo = userInfo
      this.setData({ userInfo, showAuthDialog: false })
    }
  },

  /**
   * 切换tab
   * @param {Event} event 
   */
  bindTabChange (event) {
    const curTab = event.detail.value
    this.setData({ curTab, items: null })
    if (curTab === 0) {
      this.queryNotices()
    } else if (curTab === 1) {
      this.queryRequests(0)
    } else {
      this.queryRequests(1)
    }
  },

  /**
   * 查询申请列表
   * @param {String} type 请求的类型，0表示申请，1表示线索
   */
  queryRequests (type) {
    wx.showLoading({ title: '加载中' })
    wx.cloud.callFunction({
      name: 'queryRequestOfUser',
      data: { type }
    }).then(res => {
      const { errMsg, list } = res.result
      if (errMsg === 'collection.aggregate:ok') {
        this.setData({
          items: list
        })
      }
    }).finally(() => {
      wx.hideLoading()
    })
  },

  /**
   * 查询我的公告信息
   */
  queryNotices () {
    wx.showLoading({ title: '加载中' })
    const type = this.data.curTab
    wx.cloud.callFunction({
      name: 'queryNoticeOfUser',
      data: { type }
    }).then(res => {
      const { code, data } = res.result
      if (code === 0) {
        this.setData({
          items: data.map(v => {
            v.time = app.formatDate(v.time, 'date')
            return v
          })
        })
      }
    }).finally(() => {
      wx.hideLoading()
    })
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: async function (options) {
    // 获取用户信息
    const userInfo = await app.getUserInfo()
    if (userInfo) {
      this.setData({ userInfo })
    } else {
      this.setData({ showAuthDialog: true })
    }
    // 加载列表
    const curTab = options.tab ? +options.tab : 0
    this.setData({ curTab })
    if (curTab === 0) {
      this.queryNotices()
    } else if (curTab === 1) {
      this.queryRequests(0)
    } else {
      this.queryRequests(1)
    }
    // 设置新动态
    const dynamic = app.global.dynamic
    if (dynamic && dynamic.received > 0) {
      this.setData({ 'tabs[0].badge': dynamic.received })
    }
    if (dynamic && dynamic.request > 0) {
      this.setData({ 'tabs[1].badge': dynamic.request })
    }
    if (dynamic && dynamic.clue > 0) {
      this.setData({ 'tabs[2].badge': dynamic.clue })
    }
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {
    publishRouter.update('/pages/person/person')
  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})